#ifndef __IRENDERTARGET_H__
#define __IRENDERTARGET_H__

#include <export.h>
#include <iviewport.h>
#include <gfx/enum.h>
#include <math/rect.h>

struct iTexture2D;

/**
 * \addtogroup graphics
 * @{
 */

/**
 * @brief Description for the creation of a render target.
 */
struct ceRenderTargetDescriptor
{
  ceRect        Size;
  cePixelFormat ColorFormat;
  bool          DepthStencilTexture;
  cePixelFormat DepthStencilFormat;

};

/**
 * @brief Interface for a hardware render target where the device can render on.
 */
struct CE_API iRenderTarget : public iViewport
{

  virtual void Bind () = 0;
  virtual void Unbind () = 0;

  virtual const ceRect& GetSize () const = 0;

  virtual ceRenderTargetMethod GetMethod () const = 0;

  virtual iTexture2D* GetColorTexture () const = 0;

  virtual iTexture2D* GetDepthTexture () const = 0;

};


/** @} */

#endif /* ! __IRENDERTARGET_H__*/

